package com.shujia.day15.ketang;

/*
    异常的处理方案：
        1、try...catch...finally

    try...catch使用注意事项：
        1、当try中出现异常时，JVM会对应创建一个异常类对象
        2、自上而下会与catch中的异常进行匹配，若匹配上就相当于处理了，执行catch中的逻辑
        3、若try中有多个异常，当第一个异常触发时，try中的其它后续代码都不会执行，JVM会对应创建一个异常类对象进行第二步匹配
        4、可以直接写一个catch里面是所有异常的父类、
        5、若存在多个catch匹配，需要将父类异常往后写
        6、若使用jdk新特性的写法的话，异常类之间不能存在继承关系
 */
public class ExceptionDemo2 {
    public static void main(String[] args) {

        int[] arr = {11, 22, 33, 44, 55};

//        try {
//            System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/3); // new ArithmeticException()
//            System.out.println("江川比李刚帅！");
//        }catch (ArrayIndexOutOfBoundsException e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦！！");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误！！");
//        }

//        try {
//            System.out.println(arr[2]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/0); // new ArithmeticException()
//            System.out.println("江川比李刚帅！");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误！！");
//        }catch (Exception e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦！！");
//        }

        try {
            System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()
            System.out.println(10 / 3); // new ArithmeticException()
            System.out.println("江川比李刚帅！");
        } catch (ArrayIndexOutOfBoundsException | ArithmeticException e) { // = new ArrayIndexOutOfBoundsException()
            System.out.println("出错啦！！");
        }


        System.out.println("李刚真帅！");


    }
}
